The present invention generally relates to data processing systems. More particularly, the present invention relates to remote object access mechanisms.
In the years since their inception, computer systems have become more and more popular. This popularity stems from the fact that computers can be used to perform a variety of complex tasks in an efficient manner. The mechanisms used by computer systems to perform these complex tasks are called computer programs.
Like computer systems themselves, the development of computer programs has been an evolutionary process. Early computer systems used what was called a xe2x80x9cone addressxe2x80x9d computer programming language. This language allowed for only the most rudimentary computer programs. By the 1960s, however, computer programs had become so large and complex that it was difficult to manage and control their development and maintenance. Therefore, the focus of the 1970""s was on the development of programming methodologies and environments that could better accommodate the increasing complexity and cost of large computer programs. One such methodology is known in the industry as Object-Oriented Programming (OOP). Though it has been some time since the fundamental notions of OOP were first developed, OOP systems are becoming more and more prevalent because it is felt that the use of OOP can greatly increase the efficiency of computer programmers.
As its name suggests, objects are central to OOP technology. A single object represents an individual operation or a group of operations that are performed by a computer system upon information controlled by the object. Objects can be thought of as autonomous agents that work together to perform certain tasks. A single object represents an individual operation or a group of operations that are performed by a computer system upon information controlled by the object. The operations of objects are called xe2x80x9cmethodsxe2x80x9d and the information controlled by objects is called xe2x80x9cobject dataxe2x80x9d or just xe2x80x9cdata.xe2x80x9d Methods and object data are said to be xe2x80x9cencapsulatedxe2x80x9d in the object.
When a method of one object needs access to the data controlled by a second object, it is considered to be a client of the second object. To access the data controlled by the second object, one of the methods of the client (i.e., a client method) will call or invoke the second object to gain access to the data controlled by that object. One of the methods of the called object (i.e., a server method in this case) is then used to access and/or manipulate the data controlled by the called object. Sometimes entire computer programs are made up of groupings of objects and sometimes objects are simply accessed by more traditional computer programs to perform one specific task or subtask. Regardless of whether an object is accessed by another object or by a more traditional computer program, the object which contains the method that is being called is said to be a server object and the accessing entity is said to be a client of that object.
Objects are further characterized as being either transient or persistent and as either being local or remote. A transient object is a server object that is created upon request by a client and that exists only so long as the requesting client object has a need for it. By contrast, a persistent object is an object that remains available for use by different clients until it is expressly destroyed. A server object is said to be local if it resides on the same computer system as the client program. A server object is said to be a remote object when it is located on different computer system than the client programs that it serves. Client programs communicate with remote server objects through the use of what are termed xe2x80x9cremote object access mechanisms.xe2x80x9d These mechanisms are very important because they are the backbone upon which distributed object computing is based.
There are currently two basic types of remote object access models that are used within the various segments of the computer industry. Although these two models are often described using differing terminology, they are referred to within this patent document as xe2x80x9cpage shippingxe2x80x9d and xe2x80x9cfunction shipping.xe2x80x9d Page shipping is currently most strongly associated with Object-Oriented Database (OODB) providers such as Object Development Inc. (ODI) and Versant Object Technology Inc. Function shipping, which is a newer approach, is an attempt at standardization that is supported by a group called OMG. OMG, which stands for Object Management Group, is composed of a group of software Vendors that includes IBM, Digital Equipment Corporation, Hewlett-Packard and others.
Each model is known in the industry to have certain strengths and certain weaknesses. For example, the page shipping model, which performs well when a server object or set of server objects is repeatedly accessed by a client program on the same computer system, does not perform well in situations where client programs on different computer systems demand simultaneous access to the same server object or set of server objects. The function shipping model, on the other hand, does perform relatively well in situations where client programs on different computer systems demand simultaneous access to the same server object or set of server objects, but does not perform well in the more typical repeated access situation.
Another problem with the two remote object access models is that programmers are forced to write their programs differently under, each model. This lack of uniformity means that programs must be explicitly rewritten and recompiled to operate under a different model. Stated another way, programs that are written using the page shipping model cannot be used with the function shipping model and programs written using the function shipping model cannot use the page shipping model.
While industry experts are able to debate the respective strengths and weaknesses of each of these remote object access mechanisms, the basic truth is that the potential of distributed object computing will never be fully realized without a remote access mechanism that maximizes the benefits of each of the two models without suffering from each model""s inherent shortcomings.
The preferred embodiment of the present invention involves a shipper mechanism that serves remote object access requests in accordance with either the page shipping model or the function shipping model. The shipper operates under the page shipping model in the standard way, but services clients under the function shipping model by page shipping prebuilt pages, which we term proxy pages. As its name suggests, a proxy page is a shippable memory page that contains proxy objects. The shipper mechanism also includes a switch submechanism that dynamically switches between the two models based on a variety of network and computer system factors (called environment factors), while nevertheless providing a single, consistent interface to the programs it serves.